'use strict';

// 导入koa2框架
const Koa = require('koa');

// 导入静态资源处理的模块
const statics = require('koa-static');

// 导入模板引擎中间件
const temp = require('./templating');

// 导入controllers文件夹下的index.js作为处理URL的路由中间件
const router = require('./controllers/index.js');

// 导入处理post请求的模块
const bodyParser = require('koa-bodyparser');

// 导入数据库模型
const models = require('./models');

// 实例化对象server
const server = new Koa();

// 注册使用静态资源处理模块
server.use(statics(__dirname));

// 注册使用处理post请求的模块
server.use(bodyParser());

// 注册使用处理URL的路由中间件
server.use(router());

// 注册使用模板引擎中间件
server.use(temp);

// 渲染指定模板，并进行传值
server.use(async (ctx, next) => {
    ctx.render('index.html');
});

// 程序运行时，初始化数据表
(async () => {
    await models.sync().then(() => {
        let users = models.User;
        users.create({ username: 'hyr', password: '123456' });
    });
})();

// 服务器监听端口
let port = 3000;
server.listen(port, () => {
    console.log(`http://127.0.0.1:${port}`);
});